StarkNet 中文开发者 Meetup(文字版)
大家好,欢迎参加今天 StarkNet 中文开发者 Meetup。本次 Meetup 由 StarkNet 与 ECN 以太坊中文社区合办,由 dApp Learning 与登链社区提供支持。
本次 Meetup 分为两部分,第一部分为 StarkNet Layer2 解决方案主题演讲,第二部分是 AMA 由 StarkNet 团队 Henri Lieutaud 回答中文社区问题。第一部分为中文,第二部分为中英文。
主题演讲 — STARK Validity Rollup 扩容终极解决方案
2008 年的比特币出现,2015 年的以太坊出现。代表新一代金融基础设施区块链诞生,但他们处理能力相对支付宝、银行要慢。
在比特币之前,我们的商业生活存在一些受信任的机构来负责维护我们的账本,为它们提供安全性。在这种模式中,为了公正、完整性,我们就需要信任银行、保险公司,委托责任给会计、财务、法务等专业人士或者实体。这种委托式责任非常高效,且具有排他性。
那么区块链的诞生,代表新一代金融基础设施。在区块链里,没有任何一个单一实体负责所有交易的执行和维护,每个网络参与者都必须负责账本维护,也就是说每个网络参与者都要对网络里的任何东西进行重新执行和重新计算,这也是在区块链上进行交易这么贵的原因。
我们把这种无需信任任何中心化机构或实体,网络上每个人对区块链上所有东西都进行验证的特性称为“包容性责任 (inclusive accountability)”。
这种系统具有包容性、安全性和去中心化,但它很贵,很慢,会牺牲隐私性和可扩展性。
这时候我们就要考虑如何保证包容性的同时,进行扩容
区块链网络之所以难以扩展,是因为如果想要提高一个网络的负载,计算账本的人就需要使用更大型的计算机。而要保证去中心化,就不可能让每个参与网络的人都在家运行大型机器。因此,如果你选择了更高的吞吐量,就会把小型运行者排除在外。小型运行者如果想参与网络,就只能信任大型运行者,这就会导向中心化。
现在主要扩容方案,一种就是欺诈证明 rollup。欺诈证明 rollup 还是需要依赖大型计算机来处理网络,给出正确的输出,但如果他们想篡改交易内容,你会有记录,你可以追索。有问题的交易可以在挑战期内回滚。
在欺诈证明 rollup 里,并不是所有参与者都计算所有的交易,他们基于博弈论假设所有交易都得到正确处理,所以需要有最小信任假设,具有不完全包容性。
另外一种扩容方案就是,有效性证明,代表性的就是 StarkNet 与 zkSync、还有 Aztec。StarkNet 的 zk-rollup 使用的有效性证明,一种新的加密技术,这种技术可以把一定量的计算变成我们称之为零知识证明的东西,而这种零知识证明确保这些计算都是正确的,而你不需要重新计算。所以我们的网络会有点不同,我们有不同的参与者,我们仍然有大型参与者集中了大量为所有人做计算的网络容量,但你会有数学上的保证,这些大型参与者做的计算都是按照规则的。这种方法的精妙之处在于这些证明是可以被验证的。计算证明就是你告诉别人我做了这些计算,这是证明,这个证明是一些数据,别人可以拿这些数据去验证,就可以知道你的计算是否正确。这里很棒的地方在于你可以做很少量的工作就可以验证,而不需要真的去执行计算。这其实有点像工作量证明。
它的工作机制是这样的,Prover (证明者) 会接收计算负载,执行所有东西,然后生成一个执行证明 (Statement)。这个包含执行和执行结果的证明会被发送到 verifier (验证者),验证者可以通过执行某个程序验证该结果,且执行该程序不可能会得出其他结果。也就是说,并不需要所有人都计算一切才能得到共同的世界状态。这样一来,我们可以剩下大量的冗余,可以有专业化角色,而不需要每个人来进行相同的计算。可以让少数人为所有人做所有的计算,但每个人都可以从相同的世界状态受益。这些证明会被发送到以太坊,以太坊上有操作码可以验证计算证明,也就是说以太坊本身就可以做验证,在 StarkNet 和以太坊间不需要有中间角色。
此外证明是不包含任何交易信息,交易金额、交易地址、时间都不包含。只是用来验证这些交易的可靠性,所以有效性证明不会把交易信息暴露给验证者。
另外随着处理交易量增加,证明者处理时间呈线性增长,而验证者处理时间的增长则非常慢。比如说现在每个区块处理一万笔交易,验证者下载验证证明需要 170 ms,那么处理交易量增加一百倍到 100 万,那么验证者处理时间是 400 ms,这样处理交易量增加 100 倍,验证者处理时间只增加了 2.5 倍。这样验证者数据处理成本更低,更快,所以有很好扩展性。
StarkWare/StarkEx/StarkNet
StarkWare 旗下两款款产品就是 StarkEx 和 StarkNet。StarkEx 是 2020 年就已经上线,目前 tps 最高的 L2,交易量占以太坊 1/4。
这时候先来介绍一下背后的团队,StarkWare 成立于 2018 年。zk-STARK 是由 StarkWare 团队研发的最新的零知识证明技术,最先应用于 StarkNet 和 StarkEx。Cairo 是图灵完备的通用计算编程语言,StarkNet 合约和 StarkNet OS 都是基于 Cairo 语言编写的,使得开发者能够进行更加轻松快捷的代码开发、审校和维护。StarkNet 提供两种数据可用性解决方案,Validium 是链下方案,Volition 是可选链上链下的方案。
StarkEx 是利用 zkSTARK 技术针对特定应用定制的扩容方案。使用 StarkEx 扩容引擎的应用有:链上永续合约 dYdX、链上现货交易 Deversifi、NFT 市场 Immutable 和 NFT 足球游戏 Sorare。
StakNet 分四步推出,分别是:基础设施搭建、行星计划 (单应用 zk-Rollup)、星群计划 (多应用 zk-Rollup)、宇宙计划 (去中心化 zk-Rollup)。
StarkNet 作为去中心化无需许可的通用计算平台,欢迎感兴趣的开发者加入到我们的社区当中。欢迎加入 discord,我们团队会为开发者提供最好的开发体验。
AMA
问:Polygon、BSC 这些扩容方案方式都很简单,都采用兼容 EVM 的方式。StarkNet 为什么选择一条不同的路,从算法到 Cairo 所有都重构?
答:STARK 证明的工作原理是这样的,它基于一种数学方程。当你需要使用一个证明去证明某个事实时,你要证明你满足了某个数学命题。那怎么做到呢,基于此类计算构建一种编程语言,并使得其可证明。这意味着你可以从其正确执行下生成一个证明。这不简单,现在任何其他编程语言都无法做到。这就是为什么我们需要一个特殊的编程语言来实现一个可证明的程序。
这个问题可以是,为什么基于 Cairo 语言重新实现 EVM。EVM 是由网络中所有参与者来运行。而 Cairo 中不需要这么做,需要有个计算机进行运算,给出一个正确的证明。使用 Cairo 可以进行更复杂的运算,用 Solidity 做不到。
问:开发者如何在 StarkNet 开始开发?他们得从头开始学 Cairo 吗?
答:不一定学习 Cairo。Cairo 是通用计算语言,你需要熟悉 StarkNet,但不一定要学 Cairo。我们在开发一个 Solidity <> Cairo 转译器 Warp。如果想要学习,有教程,开始非常简单。也可以部署 ERC-20/721 合约,如果有任何问题可以联系我。Warp 目前使用会有些问题 (后续会有持续版本更新)。(转译器 Warp 和 Cairo 的学习资料见附录)
问:StarkNet 与 StarkEx 未来如何发展?
答:StarkNet 已经测试了九个月,一直在测试 Cairo VM 的智能合约通用计算。去中心化方面,今年也在进行。目前主要还是解决性能,预计使 StarkNet 相对于以太坊提升十倍,成本降低百倍,预计今年七月达到。
下半年我们会研究可靠、具体的去中心化方案。去中心化并非一蹴而就,我们不想太急于求成,我们想求稳,今年底会推出具体方案。
我们会引入递归证明,推出 L3,形成 “以太坊 -> StarkNet -> StarkEx” 这样的结构。StarkNet 是在以太坊验证所有交易。未来 StarkNet 实现图灵完备,应用可以直接在 StarkNet 部署。StarkEx 上的应用可以继续使用,也可以选择到 StarkNet 上。就像 StarkNet 建在以太坊上,实现可组合。
问:关于 L2 原生 dApp,是否会出现我们在 L1 从没见过的应用?
答:当然会。StarkNet 的优势就是给予开发者无限的计算能力。从这方面讲肯定会出现很多新的东西,到底是什么还很难预测。
游戏已经有很多有意思的应用。比如说对战之类在以太坊上很难实现,在 StarkNet 做此类计算很便宜。
另外就是跨链应用,StarkNet 有非常多样化的桥接功能。你可以从 L1 向 L2 发送任何负载。请注意,不是转账,而是负载。所以你可以把 dApp 的头部部署在 L2,在这里可以进行费用较低的治理或游戏操作,可以向 L1 的流动性发送指令。就像 L2 是大脑,L1 是肌肉。
问:团队要迁移 dApp 到 StarkNet 该怎么做?
答:如果想要在多链部署,在 StarkNet 上部署回比较难。因为StarkNet 的工具完全不一样,用在 EVM 的东西都不适用于 StarkNet。现在可以用 Warp 转译 Solidity 到 Cairo 开始部署。要是有 dApp 在 L1,只是想在 L2 扩展功能,我们有「信息桥(messaging brige)」,可以从 StarkNet 发送命令给 L1.
附录
转译器 Warp 和 Cairo 学习资料:
✦ https://github.com/NethermindEth/warp
✦ https://github.com/l-henri/starknet-cairo-101
✦ https://github.com/l-henri/starknet-erc721
✦https://starknet.io/docs/hello_starknet/index.html#hello-starknet
✦https://github.com/l-henri/starknet-erc20
StarkNet 致力于开发去中心化、无需许可的通用计算平台,欢迎开发者加入 StarkNet 社区
Discord - https://discord.gg/uJ9HZTUk2Y
中文开发者 Telegram - https://t.me/starknet_zh
点击“阅读原文”获取文章内部链接!
原文链接:https://www.bilibili.com/video/BV1Ab4y1p7ZF?spm_id_from=333.999.0.0
ECN的翻译工作旨在为中国以太坊社区传递优质资讯和学习资源,文章版权归原作者所有,转载须注明原文出处以及ETH中文站。若需长期转载,请联系eth@ecn.co进行授权。